<template>
	<basic-container>
		<avue-crud
			ref="crud"
			:page.sync="page"
			:data="tableData"
			:permission="permissionList"
			:table-loading="tableLoading"
			:option="tableOption"
			@on-load="getList"
			@search-change="searchChange"
			@refresh-change="refreshChange"
			@size-change="sizeChange"
			@current-change="currentChange"
			@row-update="handleUpdate"
			@row-save="handleSave"
			@row-del="rowDel"
		></avue-crud>
	</basic-container>
</template>

<script>
import { fetchList, getObj, addObj, putObj, delObj } from '/@/api/admin/sys-app';
import { tableOption } from '/@/const/crud/admin/sys-app';
import { deleteText } from '/@/config/geoserver';
import { auth } from '/@/utils/authFunction';
import { useMessage, useMessageBox } from '/@/hooks/message';
export default {
	name: 'PcNewTemplateIndex',

	data() {
		return {
			searchForm: {},
			tableData: [],
			page: {
				total: 0, // 总页数
				currentPage: 1, // 当前页数
				pageSize: 20, // 每页显示多少条
			},
			tableLoading: false,
			tableOption: tableOption,
		};
	},
	computed: {
		permissionList() {
			return {
				addBtn: auth('admin_app_add'),
				delBtn: auth('admin_app_del'),
				editBtn: auth('admin_app_edit'),
			};
		},
	},
	methods: {
		getList(page, params) {
			this.tableLoading = true;
			fetchList(
				Object.assign(
					{
						current: page.currentPage,
						size: page.pageSize,
					},
					params,
					this.searchForm
				)
			)
				.then((response) => {
					this.tableData = response.data.records;
					this.page.total = response.data.total;
					this.tableLoading = false;
				})
				.catch(() => {
					this.tableLoading = false;
				});
		},
		async rowDel(row, index) {
			try {
				await useMessageBox().confirm(deleteText);
			} catch {
				return;
			}
			try {
				delObj(row.appCode);
				useMessage().success('删除成功');
				this.getList(this.page);
			} catch (err) {
				useMessage().error(err.msg);
			}
		},
		handleUpdate: function (row, index, done, loading) {
			if (row.adminPassword2) row.adminPassword = row.adminPassword2;
			putObj(row)
				.then((data) => {
                    useMessage().success('修改成功');
					done();
					this.getList(this.page);
				})
				.catch(() => {
					loading();
				});
		},
		handleSave: function (row, done, loading) {
			if (row.adminPassword2) row.adminPassword = row.adminPassword2;
			addObj(row)
				.then((data) => {
                    useMessage().success('添加成功');
					done();
					this.getList(this.page);
				})
				.catch(() => {
					loading();
				});
		},
		sizeChange(pageSize) {
			this.page.pageSize = pageSize;
		},
		currentChange(current) {
			this.page.currentPage = current;
		},
		searchChange(form, done) {
			this.searchForm = form;
			this.page.currentPage = 1;
			this.getList(this.page, form);
			done();
		},
		refreshChange() {
			this.getList(this.page);
		},
	},
};
</script>

<style lang="less" scoped>
</style>